package com.example.businessmanage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.businessmanage.domain.po.FosterBusinessPO;
import org.apache.ibatis.annotations.Param;

/**
 * 代养业务Mapper（MyBatis-Plus，支撑“我的代养”功能）
 */
public interface FosterBusinessMapper extends BaseMapper<FosterBusinessPO> {

    /**
     * 分页查询代养人的“我的代养”列表（外借情况>1且负责人是当前代养人）
     * @param page 分页参数
     * @param fosterUserId 代养人ID（负责人ID）
     * @param minLendStatus 最小外借状态（1-已申请外借，此处取2-已选择代养及以上）
     * @return 分页代养业务列表
     */
    IPage<FosterBusinessPO> selectMyFosterPage(
            Page<FosterBusinessPO> page,
            @Param("fosterUserId") Long fosterUserId,
            @Param("minLendStatus") Integer minLendStatus);

    /**
     * 根据宠物ID和代养人ID查询代养业务（判断是否已存在有效业务）
     * @param petId 宠物ID
     * @param fosterUserId 代养人ID
     * @param invalidStatus 无效业务状态（5-已完成，排除已结束的业务）
     * @return 代养业务PO（null-无有效业务）
     */
    FosterBusinessPO selectByPetAndFoster(
            @Param("petId") Long petId,
            @Param("fosterUserId") Long fosterUserId,
            @Param("invalidStatus") Integer invalidStatus);

    /**
     * 根据宠物ID更新代养业务状态（与pet_info的lend_status同步）
     * @param petId 宠物ID
     * @param newBusinessStatus 新业务状态
     * @return 更新行数
     */
    int updateBusinessStatusByPetId(
            @Param("petId") Long petId,
            @Param("newBusinessStatus") Integer newBusinessStatus);
}
